//
// Created by madison on 2022/1/15.
//

#include <iostream>
#include <csignal>
#include <unistd.h>

using namespace std;

void signalHandler(int signum) {
    cout << "Interrupt signal (" << signum << ") received.\n";

    // 清理并关闭
    // 终止程序

    exit(signum);
}

int main() {
    // 注册信号 SIGINT 和信号处理程序 C++ 信号处理库提供了 signal 函数，用来捕获突发事件
    signal(SIGINT, signalHandler);
    int i = 0;

    while (++i) {
        cout << "Going to sleep...." << endl;

        // 您可以使用函数 raise() 生成信号，该函数带有一个整数信号编号作为参数
        if (i == 3) {
            raise(SIGINT);
        }
        sleep(1);
    }

    return 0;
}